package com.bt7274.pojo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import java.time.LocalDateTime;

/**
 * <p>
 * 种子文件信息表
 * </p>
 *
 * @author hp
 * @since 2025-06-14
 */
public class Torrent implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 自增主键ID，唯一标识每条种子记录
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 种子的唯一标识符（SHA1哈希值），用于唯一标识一个种子文件
     */
    private String infoHash;

    /**
     * 发布该种子的用户ID，外键关联到用户表
     */
    private String userId;

    /**
     * 种子主标题
     */
    private String title;

    /**
     * 种子副标题（可选）
     */
    private String tags;

    /**
     * 种子文件总大小（字节）
     */
    private Long size;

    /**
     * 种子创建时间，默认为2025-01-01 08:00:00
     */
    private LocalDateTime createTime;

    /**
     * 种子最后更新时间，默认为2025-01-01 08:00:00
     */
    private LocalDateTime updatedTime;

    /**
     * 是否处于待审核状态（true/false）
     */
    private Boolean underReview;

    /**
     * 是否匿名发布（true/false）
     */
    private Boolean anonymous;

    /**
     * 分类ID，外键关联到分类表
     */
    private Long categoryId;

    /**
     * 推广策略ID，外键关联到推广策略表
     */
    private Long promotionPolicyId;

    /**
     * 种子详细描述信息
     */
    private String description;

    private Integer status;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getInfoHash() {
        return infoHash;
    }

    public void setInfoHash(String infoHash) {
        this.infoHash = infoHash;
    }

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getTags() {
        return tags;
    }

    public void setTags(String tags) {
        this.tags = tags;
    }

    public Long getSize() {
        return size;
    }

    public void setSize(Long size) {
        this.size = size;
    }

    public LocalDateTime getCreateTime() {
        return createTime;
    }

    public void setCreateTime(LocalDateTime createTime) {
        this.createTime = createTime;
    }

    public LocalDateTime getUpdatedTime() {
        return updatedTime;
    }

    public void setUpdatedTime(LocalDateTime updatedTime) {
        this.updatedTime = updatedTime;
    }

    public Boolean getUnderReview() {
        return underReview;
    }

    public void setUnderReview(Boolean underReview) {
        this.underReview = underReview;
    }

    public Boolean getAnonymous() {
        return anonymous;
    }

    public void setAnonymous(Boolean anonymous) {
        this.anonymous = anonymous;
    }

    public Long getCategoryId() {
        return categoryId;
    }

    public void setCategoryId(Long categoryId) {
        this.categoryId = categoryId;
    }

    public Long getPromotionPolicyId() {
        return promotionPolicyId;
    }

    public void setPromotionPolicyId(Long promotionPolicyId) {
        this.promotionPolicyId = promotionPolicyId;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    @Override
    public String toString() {
        return "Torrent{" +
        "id = " + id +
        ", infoHash = " + infoHash +
        ", userId = " + userId +
        ", title = " + title +
        ", tags = " + tags +
        ", size = " + size +
        ", createTime = " + createTime +
        ", updatedTime = " + updatedTime +
        ", underReview = " + underReview +
        ", anonymous = " + anonymous +
        ", categoryId = " + categoryId +
        ", promotionPolicyId = " + promotionPolicyId +
        ", description = " + description +
        ", status = " + status +
        "}";
    }
}
